﻿#pragma once
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
#include<stdbool.h>
typedef int ercsdata;

typedef char BTdata;


typedef struct Tree
{
	int arr;
	struct Tree* zuo;//左
	struct Tree* you;//右
}BT;

//前序遍历
void qian(BT* root);
//中序遍历
void zho(BT* root);
//后序遍历
void ho(BT* root);
//二叉树节点个数
int BinaryTreeSize(BT* root);
// ⼆叉树叶⼦结点个数 
int BinaryTreeLeafSize(BT* root);
// ⼆叉树第k层结点个数 
int BinaryTreeLevelKSize(BT* root, int k);
//⼆叉树的深度/⾼度
int BinaryTreeDepth(BT* root);
// ⼆叉树查找值为x的结点 
BT* BinaryTreeFind(BT* root, ercsdata x);
//二叉树销毁
void ercs_xiaoh(BT** root);

// 通过前序遍历的数组"ABD##E#H##CF##G##"构建二叉树
BT* BinaryTreeCreate(BTdata* a, int n, int* pi);